#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdbool.h>
#include<stdio.h>
//bool lemonadeChange(int* bills, int billsSize)
//{
//	int i = 0;
//	int arr[3] = { 0 };
//	for (i = 0; i < billsSize; i++)
//	{
//		if (bills[i] == 5)
//		{
//			arr[0]++;
//		}
//		else if (bills[i] == 10)
//		{
//			arr[1]++;
//		}
//		else
//		{
//			arr[2]++;
//		}
//		if (arr[0] < arr[1] + arr[2])
//		{
//			return false;
//		}
//		if (arr[0] >= arr[1] + arr[2] && arr[1] < arr[2])
//		{
//			return false;
//		}
//	}
//	return true;
//}

//void* my_memcpy(void* str1, const void* str2, size_t n)
//{
//	int i = 0;
//	for (i = 0; i < n; i++)
//	{
//		*((char*)str1 + i) = *((char*)str2 + i);
//	}
//	return str1;
//}

void* my_memmove(void* str1, const void* str2, size_t n)
{
	int i = 0;
	if ((char*)str1 - (char*)str2 > 0)
	{
		for (i = n - 1; i >= 0; i--)
		{
			*((char*)str1 + i) = *((char*)str2 + i);
		}
	}
	else
	{
		for (i = 0; i < n; i++)
		{
			*((char*)str1 + i) = *((char*)str2 + i);
		}
	}
	return str1;
}

int main()
{
	int arr1[] = { 1,2,3,4,5 };
	int arr2[] = { 6,7,8,9,10 };
	my_memmove(arr1+1, arr1, sizeof(arr1[0]) * 3);
	int i = 0;
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr1[i]);
	}
	return 0;
}